<?php  
class ChineseSpell {  
/** 
* @var array $chineseSpellList 拼音编码对应表 
* @access private 
*/  
private $chineseSpellList = array(  
'a'=>-20319,  
'ai'=>-20317,  
'an'=>-20304,  
'ang'=>-20295,  
'ao'=>-20292,  
'ba'=>-20283,  
'bai'=>-20265,  
'ban'=>-20257,  
'bang'=>-20242,  
'bao'=>-20230,  
'bei'=>-20051,  
'ben'=>-20036,  
'beng'=>-20032,  
'bi'=>-20026,  
'bian'=>-20002,  
'biao'=>-19990,  
'bie'=>-19986,  
'bin'=>-19982,  
'bing'=>-19976,  
'bo'=>-19805,  
'bu'=>-19784,  
'ca'=>-19775,  
'cai'=>-19774,  
'can'=>-19763,  
'cang'=>-19756,  
'cao'=>-19751,  
'ce'=>-19746,  
'ceng'=>-19741,  
'cha'=>-19739,  
'chai'=>-19728,  
'chan'=>-19725,  
'chang'=>-19715,  
'chao'=>-19540,  
'che'=>-19531,  
'chen'=>-19525,  
'cheng'=>-19515,  
'chi'=>-19500,  
'chong'=>-19484,  
'chou'=>-19479,  
'chu'=>-19467,  
'chuai'=>-19289,  
'chuan'=>-19288,  
'chuang'=>-19281,  
'chui'=>-19275,  
'chun'=>-19270,  
'chuo'=>-19263,  
'ci'=>-19261,  
'cong'=>-19249,  
'cou'=>-19243,  
'cu'=>-19242,  
'cuan'=>-19238,  
'cui'=>-19235,  
'cun'=>-19227,  
'cuo'=>-19224,  
'da'=>-19218,  
'dai'=>-19212,  
'dan'=>-19038,  
'dang'=>-19023,  
'dao'=>-19018,  
'de'=>-19006,  
'deng'=>-19003,  
'di'=>-18996,  
'dian'=>-18977,  
'diao'=>-18961,  
'die'=>-18952,  
'ding'=>-18783,  
'diu'=>-18774,  
'dong'=>-18773,  
'dou'=>-18763,  
'du'=>-18756,  
'duan'=>-18741,  
'dui'=>-18735,  
'dun'=>-18731,  
'duo'=>-18722,  
'e'=>-18710,  
'en'=>-18697,  
'er'=>-18696,  
'fa'=>-18526,  
'fan'=>-18518,  
'fang'=>-18501,  
'fei'=>-18490,  
'fen'=>-18478,  
'feng'=>-18463,  
'fo'=>-18448,  
'fou'=>-18447,  
'fu'=>-18446,  
'ga'=>-18239,  
'gai'=>-18237,  
'gan'=>-18231,  
'gang'=>-18220,  
'gao'=>-18211,  
'ge'=>-18201,  
'gei'=>-18184,  
'gen'=>-18183,  
'geng'=>-18181,  
'gong'=>-18012,  
'gou'=>-17997,  
'gu'=>-17988,  
'gua'=>-17970,  
'guai'=>-17964,  
'guan'=>-17961,  
'guang'=>-17950,  
'gui'=>-17947,  
'gun'=>-17931,  
'guo'=>-17928,  
'ha'=>-17922,  
'hai'=>-17759,  
'han'=>-17752,  
'hang'=>-17733,  
'hao'=>-17730,  
'he'=>-17721,  
'hei'=>-17703,  
'hen'=>-17701,  
'heng'=>-17697,  
'hong'=>-17692,  
'hou'=>-17683,  
'hu'=>-17676,  
'hua'=>-17496,  
'huai'=>-17487,  
'huan'=>-17482,  
'huang'=>-17468,  
'hui'=>-17454,  
'hun'=>-17433,  
'huo'=>-17427,  
'ji'=>-17417,  
'jia'=>-17202,  
'jian'=>-17185,  
'jiang'=>-16983,  
'jiao'=>-16970,  
'jie'=>-16942,  
'jin'=>-16915,  
'jing'=>-16733,  
'jiong'=>-16708,  
'jiu'=>-16706,  
'ju'=>-16689,  
'juan'=>-16664,  
'jue'=>-16657,  
'jun'=>-16647,  
'ka'=>-16474,  
'kai'=>-16470,  
'kan'=>-16465,  
'kang'=>-16459,  
'kao'=>-16452,  
'ke'=>-16448,  
'ken'=>-16433,  
'keng'=>-16429,  
'kong'=>-16427,  
'kou'=>-16423,  
'ku'=>-16419,  
'kua'=>-16412,  
'kuai'=>-16407,  
'kuan'=>-16403,  
'kuang'=>-16401,  
'kui'=>-16393,  
'kun'=>-16220,  
'kuo'=>-16216,  
'la'=>-16212,  
'lai'=>-16205,  
'lan'=>-16202,  
'lang'=>-16187,  
'lao'=>-16180,  
'le'=>-16171,  
'lei'=>-16169,  
'leng'=>-16158,  
'li'=>-16155,  
'lia'=>-15959,  
'lian'=>-15958,  
'liang'=>-15944,  
'liao'=>-15933,  
'lie'=>-15920,  
'lin'=>-15915,  
'ling'=>-15903,  
'liu'=>-15889,  
'long'=>-15878,  
'lou'=>-15707,  
'lu'=>-15701,  
'lv'=>-15681,  
'luan'=>-15667,  
'lue'=>-15661,  
'lun'=>-15659,  
'luo'=>-15652,  
'ma'=>-15640,  
'mai'=>-15631,  
'man'=>-15625,  
'mang'=>-15454,  
'mao'=>-15448,  
'me'=>-15436,  
'mei'=>-15435,  
'men'=>-15419,  
'meng'=>-15416,  
'mi'=>-15408,  
'mian'=>-15394,  
'miao'=>-15385,  
'mie'=>-15377,  
'min'=>-15375,  
'ming'=>-15369,  
'miu'=>-15363,  
'mo'=>-15362,  
'mou'=>-15183,  
'mu'=>-15180,  
'na'=>-15165,  
'nai'=>-15158,  
'nan'=>-15153,  
'nang'=>-15150,  
'nao'=>-15149,  
'ne'=>-15144,  
'nei'=>-15143,  
'nen'=>-15141,  
'neng'=>-15140,  
'ni'=>-15139,  
'nian'=>-15128,  
'niang'=>-15121,  
'niao'=>-15119,  
'nie'=>-15117,  
'nin'=>-15110,  
'ning'=>-15109,  
'niu'=>-14941,  
'nong'=>-14937,  
'nu'=>-14933,  
'nv'=>-14930,  
'nuan'=>-14929,  
'nue'=>-14928,  
'nuo'=>-14926,  
'o'=>-14922,  
'ou'=>-14921,  
'pa'=>-14914,  
'pai'=>-14908,  
'pan'=>-14902,  
'pang'=>-14894,  
'pao'=>-14889,  
'pei'=>-14882,  
'pen'=>-14873,  
'peng'=>-14871,  
'pi'=>-14857,  
'pian'=>-14678,  
'piao'=>-14674,  
'pie'=>-14670,  
'pin'=>-14668,  
'ping'=>-14663,  
'po'=>-14654,  
'pu'=>-14645,  
'qi'=>-14630,  
'qia'=>-14594,  
'qian'=>-14429,  
'qiang'=>-14407,  
'qiao'=>-14399,  
'qie'=>-14384,  
'qin'=>-14379,  
'qing'=>-14368,  
'qiong'=>-14355,  
'qiu'=>-14353,  
'qu'=>-14345,  
'quan'=>-14170,  
'que'=>-14159,  
'qun'=>-14151,  
'ran'=>-14149,  
'rang'=>-14145,  
'rao'=>-14140,  
're'=>-14137,  
'ren'=>-14135,  
'reng'=>-14125,  
'ri'=>-14123,  
'rong'=>-14122,  
'rou'=>-14112,  
'ru'=>-14109,  
'ruan'=>-14099,  
'rui'=>-14097,  
'run'=>-14094,  
'ruo'=>-14092,  
'sa'=>-14090,  
'sai'=>-14087,  
'san'=>-14083,  
'sang'=>-13917,  
'sao'=>-13914,  
'se'=>-13910,  
'sen'=>-13907,  
'seng'=>-13906,  
'sha'=>-13905,  
'shai'=>-13896,  
'shan'=>-13894,  
'shang'=>-13878,  
'shao'=>-13870,  
'she'=>-13859,  
'shen'=>-13847,  
'sheng'=>-13831,  
'shi'=>-13658,  
'shou'=>-13611,  
'shu'=>-13601,  
'shua'=>-13406,  
'shuai'=>-13404,  
'shuan'=>-13400,  
'shuang'=>-13398,  
'shui'=>-13395,  
'shun'=>-13391,  
'shuo'=>-13387,  
'si'=>-13383,  
'song'=>-13367,  
'sou'=>-13359,  
'su'=>-13356,  
'suan'=>-13343,  
'sui'=>-13340,  
'sun'=>-13329,  
'suo'=>-13326,  
'ta'=>-13318,  
'tai'=>-13147,  
'tan'=>-13138,  
'tang'=>-13120,  
'tao'=>-13107,  
'te'=>-13096,  
'teng'=>-13095,  
'ti'=>-13091,  
'tian'=>-13076,  
'tiao'=>-13068,  
'tie'=>-13063,  
'ting'=>-13060,  
'tong'=>-12888,  
'tou'=>-12875,  
'tu'=>-12871,  
'tuan'=>-12860,  
'tui'=>-12858,  
'tun'=>-12852,  
'tuo'=>-12849,  
'wa'=>-12838,  
'wai'=>-12831,  
'wan'=>-12829,  
'wang'=>-12812,  
'wei'=>-12802,  
'wen'=>-12607,  
'weng'=>-12597,  
'wo'=>-12594,  
'wu'=>-12585,  
'xi'=>-12556,  
'xia'=>-12359,  
'xian'=>-12346,  
'xiang'=>-12320,  
'xiao'=>-12300,  
'xie'=>-12120,  
'xin'=>-12099,  
'xing'=>-12089,  
'xiong'=>-12074,  
'xiu'=>-12067,  
'xu'=>-12058,  
'xuan'=>-12039,  
'xue'=>-11867,  
'xun'=>-11861,  
'ya'=>-11847,  
'yan'=>-11831,  
'yang'=>-11798,  
'yao'=>-11781,  
'ye'=>-11604,  
'yi'=>-11589,  
'yin'=>-11536,  
'ying'=>-11358,  
'yo'=>-11340,  
'yong'=>-11339,  
'you'=>-11324,  
'yu'=>-11303,  
'yuan'=>-11097,  
'yue'=>-11077,  
'yun'=>-11067,  
'za'=>-11055,  
'zai'=>-11052,  
'zan'=>-11045,  
'zang'=>-11041,  
'zao'=>-11038,  
'ze'=>-11024,  
'zei'=>-11020,  
'zen'=>-11019,  
'zeng'=>-11018,  
'zha'=>-11014,  
'zhai'=>-10838,  
'zhan'=>-10832,  
'zhang'=>-10815,  
'zhao'=>-10800,  
'zhe'=>-10790,  
'zhen'=>-10780,  
'zheng'=>-10764,  
'zhi'=>-10587,  
'zhong'=>-10544,  
'zhou'=>-10533,  
'zhu'=>-10519,  
'zhua'=>-10331,  
'zhuai'=>-10329,  
'zhuan'=>-10328,  
'zhuang'=>-10322,  
'zhui'=>-10315,  
'zhun'=>-10309,  
'zhuo'=>-10307,  
'zi'=>-10296,  
'zong'=>-10281,  
'zou'=>-10274,  
'zu'=>-10270,  
'zuan'=>-10262,  
'zui'=>-10260,  
'zun'=>-10256,  
'zuo'=>-10254  
);  
  
/** 
* 取汉字所有拼音 
* @param string $chinese 要转换的汉字 
* @param string $delimiter 分隔符 
* @param int $length 返回的长度 
* @return string 
*/  
public function getFullSpell($chinese, $delimiter = '', $length = 0) {  
   $spell = $this->getChineseSpells($chinese, $delimiter);  
   if ($length) {  
    $spell = substr($spell, 0, $length);  
   }  
   return $spell;  
}  
  
/** 
* 取汉字拼音首字母 
* 
* @param string $chinese 要转化的汉子 
* @return string 
*/  
public function getFirstLetter($chinese)  
{  
   $result = '' ;  
   for ($i=0; $i<strlen($chinese); $i++) {  
    $p = ord(substr($chinese,$i,1));  
    if ($p>160) {  
     $q = ord(substr($chinese,++$i,1));  
     $p = $p*256 + $q - 65536;  
    }  
    $result .= substr($this->getChineseSpell($p),0,1);  
   }  
   return $result ;  
}  
  
/** 
* 取一个汉字码对应的拼音 
* @param int $num 汉字码 
* @param string $blank 空白字符 
* @return string 
*/  
private function getChineseSpell ($num, $blank = '') {  
   if ( $num>0 && $num<160 ) {  
    return chr($num);  
   } elseif ($num<-20319||$num>-10247) {  
    return $blank;  
   } else {  
    foreach ($this->chineseSpellList as $spell => $code) {  
     if ($code > $num) break;  
     $result = $spell;  
    }  
    return $result;  
   }  
}  
/** 
* 取汉字拼音 
* @param string $chinese 要转换的汉字 
* @param string $delimiter 分隔符 
* @param int $first 是否只返回第一个 
* @return string 
*/  
private function getChineseSpells($chinese, $delimiter = ' ', $first=0)  
{  
   $result = array();  
   for ($i=0; $i<strlen($chinese); $i++) {  
    $p = ord(substr($chinese,$i,1));  
    if ($p>160) {  
     $q = ord(substr($chinese,++$i,1));  
     $p = $p*256 + $q - 65536;  
    }  
    $result[] = $this->getChineseSpell($p);  
    if ($first) {  
     return $result[0];  
    }  
   }  
   return implode($delimiter, $result);  
}  
}  
  
//使用  
//$cs = new ChineseSpell() ;  
//echo $cs->getFirstLetter('编程').'<br>' ;   
//echo $cs->getFullSpell('编程').'<br>' ;  